package les

import java.util.List;

class Equipe {

	String nome
	String corDoCracha
	List coordenadores = []
	List membros = []
	Encontro encontro;
	String arquivoRelatorio;

	static hasMany = [coordenadores:Integrante, membros:Integrante]

	static constraints = {
		nome(blank:false)
		corDoCracha(inList:[
			'Vermelho',
			'Amarelo',
			'Verde'
		], nullable: false, blank: false)
		encontro(blank: false, nullable: false)
		arquivoRelatorio(blank: true, nullable: true)
	}

	static mapping = {
		coordenadores lazy: false
		membros lazy: false
		encontro lazy: false
	}
		
	public String toString(){
		return nome;
	}

	public List getCoordenadoresSolteiros() {
		ArrayList<Integrante> solteiros = new ArrayList<Integrante>();
		for (Integrante integr : this.coordenadores) {
			if (!integr.conjuge) {
				solteiros.add(integr);
			}
			else {
				boolean ehPraAdicionar = true;
				for (Integrante integr2 : this.coordenadores) {
					if (integr2.id == integr.conjuge.id) {
						ehPraAdicionar = false;
						break;
					}
				}
				if (ehPraAdicionar) {
					solteiros.add(integr);
				}
			}
		}
		return solteiros;
	}
	
	public List getMembrosSolteiros() {
		ArrayList<Integrante> solteiros = new ArrayList<Integrante>();
		for (Integrante integr : this.membros) {
			if (!integr.conjuge) {
				solteiros.add(integr);
			}
			else {
				boolean ehPraAdicionar = true;
				for (Integrante integr2 : this.membros) {
					if (integr2.id == integr.conjuge.id) {
						ehPraAdicionar = false;
						break;
					}
				}
				if (ehPraAdicionar) {
					solteiros.add(integr);
				}
			}
		}
		return solteiros;
	}
	
	// So retorna os homens casados
	public List getCoordenadoresCasados() {
		ArrayList<Integrante> casados = new ArrayList<Integrante>();
		for (Integrante integr : this.coordenadores) {
			if (integr.sexo == "M" && integr.conjuge) {
				boolean ehPraAdicionar = false;
				for (Integrante integr2 : this.coordenadores) {
					if (integr2.id == integr.conjuge.id) {
						ehPraAdicionar = true;
						break;
					}
				}
				if (ehPraAdicionar) {
					casados.add(integr);
				}
			}
		}
		return casados;
	}
	
	// So retorna os homens casados
	public List getMembrosCasados() {
		ArrayList<Integrante> casados = new ArrayList<Integrante>();
		for (Integrante integr : this.membros) {
			if (integr.sexo == "M" && integr.conjuge) {
				boolean ehPraAdicionar = false;
				for (Integrante integr2 : this.membros) {
					if (integr2.id == integr.conjuge.id) {
						ehPraAdicionar = true;
						break;
					}
				}
				if (ehPraAdicionar) {
					casados.add(integr);
				}
			}
		}
		return casados;
	}
	
}
